package com.longcai.controller.nearbyshop;


import com.alibaba.fastjson.JSONArray;
import com.longcai.bean.ApiResult;
import com.longcai.bean.PageHelper;
import com.longcai.entity.homepage.GoodsClass;
import com.longcai.entity.nearby.ClyjNearbyGoodsType;
import com.longcai.entity.nearby.ClyjNearbyShops;
import com.longcai.entity.nearby.ClyjTradingArea;
import com.longcai.page.table.PageTableResponse;
import com.longcai.service.nearbyshop.ClyjNearbyGoodsTypeService;
import com.longcai.service.trad.ClyjTradingAreaService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import org.springframework.stereotype.Controller;

import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;

/**
 * <p>
 * 附近商品类型 前端控制器
 * </p>
 *
 * @author M
 * @since 2019-04-12
 */
@RestController
@RequestMapping("/clyjNearbyGoodsType")
public class ClyjNearbyGoodsTypeController {


    @Autowired
    private ClyjNearbyGoodsTypeService clyjNearbyGoodsTypeService;
    /**
     * 获取类型列表
     *
     * @param clyjNearbyGoodsType
     * @param pageHelper
     * @return
     */
    @ApiOperation(value = "类型列表")
    @GetMapping(value = "/typeList/{id}")
    public PageTableResponse typeList(ClyjNearbyGoodsType clyjNearbyGoodsType, PageHelper pageHelper,@PathVariable String id) {
        return this.clyjNearbyGoodsTypeService.typeList(clyjNearbyGoodsType, pageHelper,id);
    }

    @ApiOperation(value = "类型列表")
    @GetMapping(value = "/typeLists")
    public PageTableResponse typeLists(ClyjNearbyGoodsType clyjNearbyGoodsType, PageHelper pageHelper) {
        return this.clyjNearbyGoodsTypeService.typeLists(clyjNearbyGoodsType, pageHelper);
    }
    /**
     * 新增商品类型
     *
     * @param clyjNearbyGoodsType
     * @return
     */
    @PostMapping(value = "/saveType")
    @ApiOperation(value = "新增类型")
    @PreAuthorize("hasAuthority('goods:type:add')")
    public ClyjNearbyGoodsType saveType(@RequestBody ClyjNearbyGoodsType clyjNearbyGoodsType) {
        ClyjNearbyGoodsType u = this.clyjNearbyGoodsTypeService.getName(clyjNearbyGoodsType.getName());
        if (u != null) {
            throw new IllegalArgumentException(clyjNearbyGoodsType.getName() + "已存在");
        }
        //判断id
        if (clyjNearbyGoodsType.getId() == null || clyjNearbyGoodsType.getId().equals("")) {
            return clyjNearbyGoodsTypeService.saveType(clyjNearbyGoodsType);
        } else {
            this.clyjNearbyGoodsTypeService.updateType(clyjNearbyGoodsType);
        }

        return null;
    }

    /**
     * 根据id获取商品类型
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "根据id获取商品类型")
    @GetMapping("/{id}")
    @PreAuthorize("hasAuthority('goods:type:query')")
    public ApiResult user(@PathVariable String id) {

        return this.clyjNearbyGoodsTypeService.getById(id);
    }

    /**
     * 修改商品类型
     *
     * @param clyjNearbyGoodsType
     * @return
     */
    @PutMapping(value = "updateType")
    @ApiOperation(value = "修改商品类型")
    @PreAuthorize("hasAuthority('goods:type:update')")
    public Integer updateType(@RequestBody ClyjNearbyGoodsType clyjNearbyGoodsType) {
        return this.clyjNearbyGoodsTypeService.updateType(clyjNearbyGoodsType);
    }

    /**
     * 删除商品类型
     *
     * @param id
     */
    @DeleteMapping("/{id}")
    @ApiOperation(value = "删除头条")
    @PreAuthorize("hasAuthority('goods:type:delete')")
    public void delete(@PathVariable String id) {

        this.clyjNearbyGoodsTypeService.deleteById(id);
    }


    /**
     * 获取所有商品类型
     *
     * @return
     */
    @RequestMapping("/getType")
    @ResponseBody
    public List<ClyjNearbyGoodsType> getType() {

        return clyjNearbyGoodsTypeService.getType();
    }
}

